package com.shangma.exercise;

import java.util.Arrays;

/**
 * @classname:CopyOf
 * @description:
 * @author: Mr.Z
 * @date: 2020/11/26 15:12
 * @version: 0.1
 * @since:1.8
 */
public class CopyOf {
    public static void main(String[] args) {
        int[] arrays1 = {1, 2, 3, 0, 0};
        int[] arrays2 = {2};
        //获取到第一个数组的长度
        int len1 = arrays1.length;
        //初始化count
        int count = 0;
        //循环数组一
        for (int i = 0; i < arrays1.length; i++) {
            //判断如果有元素不0就累加
            if (arrays1[i] != 0) {
                count++;
            }
        }
        //数组一的长度减去数组一不为0 元素的个数（rest为数组一中元素为0的个数）
        int rest = len1 - count;
        //数组二的长度
        int len2 = arrays2.length;
        //判断数组一中的为0 元素的长度是否小于数组二
        int num = count+len2;
        if (len2 > rest) {
            //数组一剩余空间不够添加数组二创建新的数组
            //新数组的长度为数组一中的非空数组+数组二的长度
            int[] newArray = new int[num];
            //遍历数组一中的非空元素
            for (int i = 0; i < count; i++) {
                //把数组一中的非空元素赋值到新数组
                newArray[i] = arrays1[i];
            }
            //新数组赋值给数组一
            arrays1 = newArray;
        }
        //循环数组二，数组一从count下表开始把数组二的元素赋值给数组一
        for (int i : arrays2) {
            arrays1[count] = i;
            count++;
        }
        //遍历出数组一
        //此操作是改变arrays1的大小，如果数组二的长度小于数组一的剩余空间就会有多余的0出现
//        int[] a = Arrays.copyOf(arrays1, num);
        System.out.println(Arrays.toString(arrays1));
    }
}
